package com.zenithmind.mall.pojo.dto;

import lombok.Data;
import jakarta.validation.constraints.*;

import java.math.BigDecimal;
import java.util.List;

/**
 * 订单DTO
 * 
 * @author ZenithMind Team
 * @since 2025-06-09
 */
@Data
public class OrderDTO {

    /**
     * 收货地址ID
     */
    @NotBlank(message = "收货地址不能为空")
    private String addressId;

    /**
     * 支付方式（1-支付宝，2-微信，3-余额）
     */
    @NotNull(message = "支付方式不能为空")
    @Min(value = 1, message = "支付方式不正确")
    @Max(value = 3, message = "支付方式不正确")
    private Integer paymentType;

    /**
     * 订单备注
     */
    @Size(max = 200, message = "订单备注长度不能超过200个字符")
    private String remark;

    /**
     * 优惠券ID
     */
    private String couponId;

    /**
     * 购物车商品ID列表（从购物车下单时使用）
     */
    private List<String> cartIds;

    /**
     * 直接购买商品列表（立即购买时使用）
     */
    private List<OrderItemDTO> items;

    /**
     * 订单商品DTO
     */
    @Data
    public static class OrderItemDTO {
        
        /**
         * 商品ID
         */
        @NotBlank(message = "商品ID不能为空")
        private String productId;

        /**
         * 商品规格ID
         */
        private String specificationId;

        /**
         * 购买数量
         */
        @NotNull(message = "购买数量不能为空")
        @Min(value = 1, message = "购买数量不能小于1")
        private Integer quantity;
    }
}
